home *** CD-ROM | disk | FTP | other *** search
Makefile | 1999-10-28 | 10.4 KB | 347 lines |
- #
- # $Id: mak i Ð î.2.2 1999/10/28 10:14:55 lhecking Exp $
- #
- # Makefile for use with emx and GNUMake
- # on OS/2 3.0 and above (might also work for OS/2 2.x)
- #
- # last modification date: 19991027
- #
-
- # We depend on using cmd.exe (or a compatible one)
- SHELL=cmd.exe
-
- #
- # ***************** Begin of Configuration section ***************************
- #
-
- # Comment out the definition lines to disable the according features:
-
- # X11 driver
- # requires installed XFree86
- X11=1
-
- # GD (GIF) device driver
- # requires GD library (not part of gnuplot)
- GD=1
-
- # PNG device driver
- # requires PNG and Z libraries (not part of gnuplot)
- PNG=1
-
- # VESAkit support
- # requires SVGA- and VESA Kit (not part of gnuplot)
- VESA=1
-
- # GNU_ReadLine support
- # requires GNU readline library (static or DLL; not part of gnuplot)
- GNU_RL=1
-
- # DEBUGging support
- # creates binaries suitable for debugging. Some bugs may come and go
- # as opposed to a production build since we lower the optimization level
- # DEBUG=1
-
- # MOUSE support for PM terminal
- # (not yet supported in official release)
- # MOUSE=1
-
- #
- # ****************** End of Configuration section ****************************
- #
-
- #
- # Miscellaneous setup
- #
-
- .PHONY: all runtime alldocs demo binaries infomin clean veryclean
- .SUFFIXES: .c .trm .o .obj .exe
-
- # seems to be a reasonable default ...
- default: runtime
-
- # a help screen
- help:
- @echo " Usage: $(MAKE) -f makefile.os2 target"
- @echo " target is one of:"
- @echo " all runtime alldocs demo binaries infomin help clean veryclean"
-
- #
- # Definitions of flags and symbols used by makefile.all and makefile.os2
- #
-
- # these definitions are used by makefile.all
- T=term/
- D=docs/
- L=$(D)latextut/
- M=demo/
-
- #
- # Definitions valid for all targets on OS/2
- #
-
- OS2DIR = os2
- DOCDIR = docs
- DEMODIR=demo
- TERMDIR=term
-
- OS2TERMS= $(TERMDIR)\pm.trm
- ifdef X11
- OS2TERMS += $(TERMDIR)\x11.trm
- endif
- ifdef VESA
- OS2TERMS += $(TERMDIR)\emxvga.trm
- endif
-
-
- # where to place gnuplot.gih helpfile
- HELPFILE = gnuplot.gih
-
- #
- # 3 sets of variables are defined and used to create
- # (1): gnuplot.exe
- # 2 : gnupmdrv.exe (the PM-driver executable)
- # 3 : utilities like doc2*.exe, bf_test.exe, ...
- #
- CC = gcc
- CC2 = gcc
- CC3 = gcc
- O = o
- O2 = obj
- O3 = o
-
- # Flags for compiler and linker under OS/2
- OS2FLAGS = -DOS2 -DHELPFILE=\"$(HELPFILE)\"
-
- # Flags for compiling with EMX/GCC
- # Special note: -ffloat-store is necessary to avoid some
- # strange behaviour (confirmed for gcc 2.7.x and graphics.c)
- EMXSPECIFIC = -ffloat-store -DREADLINE -DHAVE_STRNICMP -DPIPES -DHAVE_STRERROR -DHAVE_SYS_SELECT_H -DHAVE_SYS_STAT_H
- LIBS =
- ifdef GNU_RL
- EMXSPECIFIC += -DHAVE_LIBREADLINE
- LIBS += -lreadline -ltermcap
- endif
-
- #
- # Choose flags suitable for a debugging or for a production build
- #
- ifdef DEBUG
- CFLAGS = -g $(OS2FLAGS) $(EMXSPECIFIC) -Wall -Wno-comment -O0 -Zmt
- LFLAGS = -g -Zcrtdll -Zmt
- CFLAGS2 = -g $(OS2FLAGS) $(EMXSPECIFIC) -Zomf -Zsys -Zmt -Wall -O0
- LFLAGS2 = -g -Zomf -Zmt -Zcrtdll
- CFLAGS3 = -g $(OS2FLAGS) $(EMXSPECIFIC) -Wall -Wno-comment -O0
- LFLAGS3 = -g
- else
- CFLAGS = $(OS2FLAGS) $(EMXSPECIFIC) -O2 -Wall -Wno-unused -Wno-comment -Zmt
- LFLAGS = -s -Zcrtdll -Zmt
- CFLAGS2 = $(OS2FLAGS) $(EMXSPECIFIC) -Zomf -Zcrtdll -Zmt -O2 -Wall -Wno-unused
- LFLAGS2 = -s -Zomf -Zmt -Zsys
- CFLAGS3 = $(OS2FLAGS) $(EMXSPECIFIC) -O2 -Wall -Wno-unused -Wno-comment
- LFLAGS3 = -s
- endif
-
- #
- # Settings for the terminals to be included
- #
- TERMFLAGS = -I. -I$(T)
-
- # All terminals available via #defines should be listed below
- # Some terminals can be en/disabled in the configuration at the
- # beginning of this Makefile.os2 but others may still require
- # changes in term.h
-
- #
- # GIF-support
- ifdef GD
- TERMFLAGS += -DHAVE_LIBGD
- TERMLIBS += -lgd
- endif
- # PNG-support
- ifdef PNG
- TERMFLAGS += -DHAVE_LIBPNG
- TERMLIBS += -lpng -lz
- endif
- # SVGA-/VESAkit support
- ifdef VESA
- TERMFLAGS += -DEMXVESA
- TERMLIBS += -ljmgraph -lvesa
- endif
- # X11 support
- ifdef X11
- TERMFLAGS += -DX11
- endif
- # MOUSE support for PM terminal
- ifdef MOUSE
- TERMFLAGS += -DUSE_MOUSE
- endif
-
- #
- # Default Rules
- #
- .c.$(O):
- $(CC) $(CFLAGS) $(TERMFLAGS) -o $*.$(O) -c $*.c
- .c.obj:
- $(CC2) $(CFLAGS2) -o $*.obj -c $*.c
-
- #
- # Include dependencies valid for all platforms from makefile.all
- #
- include makefile.all
-
- #
- # Pre-defined sets of targets:
- #
- all: runtime demo
- alldocs: gnuplot.gih gnuplot.inf gnuplot.html gnuplot.info \
- gnuplot.dvi gnuplot.ps
- runtime: binaries infomin gnuplot.inf
- infomin: gnupmdrv.hlp gnuplot.gih
- demo: $(M)binary1 $(M)binary2 $(M)binary3
- ifdef X11
- binaries: gnuplot.exe gnupmdrv.exe gnuplot_x11.exe
- else
- binaries: gnuplot.exe gnupmdrv.exe
- endif
-
- OBJS = $(COREOBJS) version.$(O)
- term.$(O): $(OS2TERMS) term.h
-
- gnuplot.exe: $(OBJS)
- $(CC) -o $@ $(OBJS) $(TERMLIBS) $(LIBS) $(LFLAGS)
-
- #
- # Build the PM outboard driver
- #
- $(OS2DIR)\gnupmdrv.$(O2): $(OS2DIR)\gnupmdrv.c $(OS2DIR)\gnupmdrv.h
- $(OS2DIR)\gclient.$(O2): $(OS2DIR)\gclient.c $(OS2DIR)\gnupmdrv.h
- $(OS2DIR)\dialogs.$(O2): $(OS2DIR)\dialogs.c $(OS2DIR)\gnupmdrv.h $(OS2DIR)\dialogs.h
- $(OS2DIR)\print.$(O2): $(OS2DIR)\print.c $(OS2DIR)\gnupmdrv.h
- $(OS2DIR)\gnupmdrv.res : $(OS2DIR)\gnupmdrv.rc $(OS2DIR)\gnuplot.ico $(OS2DIR)\dialogs.h
- cd $(OS2DIR) & rc -r gnupmdrv.rc & cd ..
- OS2OBJ = $(OS2DIR)\gnupmdrv.$(O2) $(OS2DIR)\gclient.$(O2) $(OS2DIR)\print.$(O2) \
- $(OS2DIR)\dialogs.$(O2)
- gnupmdrv.exe: $(OS2OBJ) $(OS2DIR)\gnupmdrv.res $(OS2DIR)\gnupmdrv.def
- $(CC2) $(LFLAGS2) -o $@ $(OS2OBJ) $(OS2DIR)\gnupmdrv.res $(OS2DIR)\gnupmdrv.def
- gnupmdrv.hlp: $(OS2DIR)\gnupmdrv.ipf
- ipfc $(OS2DIR)\gnupmdrv.ipf
- move $(OS2DIR)\gnupmdrv.hlp .
-
- #
- # Build the X11 outboard driver
- #
-
- # X11 libraries
- X11LIBS = -lX11 -lsocket -Zcrtdll
- # X11 includes
- X11INCLUDES = -I$(X11ROOT)/xfree86/include
- X11FLAGS= -Zmtd -Zsysv-signals
-
- gnuplot_x11.exe: gplt_x11.o stdfn.o
- $(CC) $(LFLAGS) $(X11FLAGS) $(EMXSPECIFIC) -o $@ $^ $(X11LIBS)
-
- gplt_x11.o: gplt_x11.c
- $(CC) $(CFLAGS) $(X11FLAGS) $(EMXSPECIFIC) $(X11INCLUDES) -c -o $@ $<
-
- #
- # Create documentation in various formats
- #
- # Change the call to LaTeX if the "latex2e" is not appropiate for you
- # (and don't care about the strange way it's implemented ...)
- gnuplot.dvi: gnuplot.tex
- copy gnuplot.tex $(DOCDIR)\gnuplot_2.tex
- cd $(DOCDIR) & latex gnuplot_2.tex & latex gnuplot_2.tex
- move $(DOCDIR)\gnuplot_2.dvi gnuplot.dvi
- del $(DOCDIR)\gnuplot_2*
- gnuplot.tex: $(DOCDIR)\gnuplot.doc doc2tex.exe
- doc2tex $(DOCDIR)\gnuplot.doc gnuplot.tex
- gnuplot.ps: gnuplot.dvi
- dvips -o gnuplot.ps gnuplot.dvi
- gnuplot.inf: $(DOCDIR)\gnuplot.ipf
- ipfc -i $(DOCDIR)\gnuplot.ipf gnuplot.inf
- gnuplot.gih: $(DOCDIR)\gnuplot.doc doc2gih.exe
- doc2gih $(DOCDIR)\gnuplot.doc gnuplot.gih
- gnuplot.html: $(DOCDIR)\gnuplot.doc doc2html.exe
- doc2html $(DOCDIR)\gnuplot.doc gnuplot.html
- gnuplot.info: $(DOCDIR)\gnuplot.doc doc2info.exe
- doc2info <$(DOCDIR)\gnuplot.doc >gnuplot.info
- gnuplot.texi: $(DOCDIR)\gnuplot.doc $(DOCDIR)\doc2texi.pl
- perl $(DOCDIR)\doc2texi.pl $(DOCDIR)\gnuplot.doc >$(DOCDIR)\gnuplot.texi
- gnuplot.rtf: $(DOCDIR)\gnuplot.doc doc2rtf.exe
- doc2rtf $(DOCDIR)\gnuplot.doc gnuplot.rtf
- gnuplot.ms: $(DOCDIR)\gnuplot.doc doc2ms.exe
- doc2ms $(DOCDIR)\gnuplot.doc gnuplot.ms
- $(DOCDIR)\gnuplot.ipf: $(DOCDIR)\gnuplot.doc doc2ipf.exe
- doc2ipf $(DOCDIR)\gnuplot.doc $(DOCDIR)\gnuplot.ipf
- #
- # Tools for converting the documentation from docs\gnuplot.doc
- # in various formats
- #
- doc2gih.exe doc2ipf.exe doc2html.exe doc2info.exe doc2tex.exe doc2rtf.exe: \
- $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(DOCDIR)\allterm.h
- #
- # To include all terminal documentations in the documentation
- # uncomment the following 2 lines
- # doc2gih.exe doc2ipf.exe doc2html.exe doc2info.exe doc2tex.exe doc2rtf.exe: \
- # $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(DOCDIR)\allterm.h
-
- $(DOCDIR)\allterm.h: $(CORETERM)
- # echo > $@
- cd $(TERMDIR) & type *.trm > ..\$@
- doc2gih.exe: $(DOCDIR)\doc2gih.c $(DOCDIR)\termdoc.c $(OS2TERMS)
- $(CC3) $(CFLAGS3) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2gih.c $(DOCDIR)\termdoc.c
- doc2ipf.exe: $(DOCDIR)\doc2ipf.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(OS2TERMS)
- $(CC3) $(CFLAGS3) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2ipf.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c
- doc2tex.exe: $(DOCDIR)\doc2tex.c $(DOCDIR)\termdoc.c $(OS2TERMS) $(DOCDIR)\allterm.h
- $(CC3) $(CFLAGS3) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2tex.c $(DOCDIR)\termdoc.c
- doc2html.exe: $(DOCDIR)\doc2html.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(OS2TERMS)
- $(CC3) $(CFLAGS3) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2html.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c
- doc2info.exe: $(DOCDIR)\doc2info.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(OS2TERMS)
- $(CC3) $(CFLAGS3) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2info.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c
- doc2rtf.exe: $(DOCDIR)\doc2rtf.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(OS2TERMS)
- $(CC3) $(CFLAGS3) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2rtf.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c
- doc2ms.exe: $(DOCDIR)\doc2ms.c $(DOCDIR)\termdoc.c $(OS2TERMS)
- $(CC3) $(CFLAGS3) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2ms.c $(DOCDIR)\termdoc.c
- #
- # Create binary demo files
- #
- $(M)binary1: $(M)bf_test.exe
- cd $(DEMODIR) & bf_test.exe & cd ..
- $(M)binary2: $(M)bf_test.exe
- cd $(DEMODIR) & bf_test.exe & cd ..
- $(M)binary3: $(M)bf_test.exe
- cd $(DEMODIR) & bf_test.exe & cd ..
- $(M)bf_test.exe : bf_test.c binary.$(O) alloc.$(O)
- $(CC3) $(CFLAGS3) -o $@ bf_test.c binary.$(O) alloc.$(O)
- #
- # Clean up
- #
-
- # Clean up all files temporary used
- clean:
- IF EXIST *.$(O) DEL *.$(O)
- IF EXIST *.$(O2) DEL *.$(O2)
- cd $(OS2DIR) & IF EXIST *.$(O2) DEL *.$(O2)
- IF EXIST $(OS2DIR)\gnupmdrv.res DEL $(OS2DIR)\gnupmdrv.res
- IF EXIST demo\bf_test.exe DEL demo\bf_test.exe
- IF EXIST doc2*.exe DEL doc2*.exe
- IF EXIST gnuplot.ipf DEL gnuplot.ipf
- IF EXIST core DEL core
- IF EXIST $(DOCDIR)\allterm.h DEL $(DOCDIR)\allterm.h
-
- # Clean up ALL files that were not part of the source distribution
- veryclean: clean
- IF EXIST *.exe.exe DEL gnuplot.exe
- IF EXIST gnupmdrv.hlp DEL gnupmdrv.hlp
- IF EXIST gnuplot.gih DEL gnuplot.gih
- IF EXIST gnuplot.inf DEL gnuplot.inf
- IF EXIST gnuplot.dvi DEL gnuplot.dvi
- IF EXIST gnuplot.htm DEL gnuplot.htm
- IF EXIST gnuplot.tex DEL gnuplot.tex
- IF EXIST gnuplot.texi DEL gnuplot.texi
- IF EXIST gnuplot.info DEL gnuplot.info
- IF EXIST gnuplot.ms DEL gnuplot.ms
- IF EXIST gnuplot.rtf DEL gnuplot.rtf
- IF EXIST gnuplot.ps DEL gnuplot.ps
- cd demo & IF EXIST binary? DEL binary?
-